/*
 * Copyright (c) 2021，上海福宇龙汽车科技有限公司
 * All rights reserved.
 * 文件名称: nfc_read_card.h
 * 摘要:
 * 当前版本: V1.0.0 周伟
 * Date: 2024-03-20
 * 历史版本: Vx.x.x，编写者/修改者，修改时间，修改内容（重大发布时，总结重点变更内容）
 */

#ifndef _NFC_READ_CARD_H
#define _NFC_READ_CARD_H
#include "rte.h"
#define NFCRC_MAX_DELMS (800u)
#define SWIPE_DELMS (5000u)
#define SWIPE_DELMS_RES (10000u)
typedef enum
{
    CAN_TEST,   /*CAN通讯测试*/
    LOW_TEST,   /*低功耗检测*/
    CARD_TEST,  /*刷卡检测*/
    NFC_READ_MAX    /*暂无测试阶段*/
} NFC_Read_stage;   /*NFC_读卡器测试阶段*/

typedef enum
{
    KEY_WAIT,     /*等待按键*/
    SWIPE_WAIT,   /*等待刷卡*/
    SWIPE_MX
}Red_swipe_stage;/*刷卡状态*/

typedef struct
{
    bool NFCRC_send_data_only; /*只发送一次请求标志位*/
    bool SWIPE_send_data_only; /*刷卡检测标志位*/
    bool start_keyStableState; /*启动按键稳定状态标志或只发送一次标志*/
    Red_swipe_stage swipe_stage; /*刷卡阶段*/
    uint8_t swipe_count; /*刷卡次数*/
    uint8_t key_count;   /*按键次数*/
    uint8_t swipe_num;   /*规定刷卡次数*/
    uint32_t swie_max_delms; /*最大刷卡时间*/
    bool swipe_key_num_suc; /*刷卡和按键是否成功*/
}NFCRC_flag;

typedef struct 
{
    NFC_Read_stage stage;           /*nfc控制器测试阶段*/
    Rt_result e_sta[NFC_READ_MAX];  /*6-11各阶段具体结果情况*/
    Rt_result RED_ver_comp;        /*读卡器测试版本号比较结果*/
    Rt_result RC_results;         /*读卡器测试步骤是否流程走完*/
    nfc_can cantx;
    nfc_can canrx;
    Sent_received_flag cantx_flag;
    Sent_received_flag canrx_flag;
    NFCRC_flag N_flag;
}NFCRC_struct;


/*
 * 函数介绍: NFC读卡器初始化
 * 参数:
 * 返回值: {*}
 * 备注:
 */
void NFCRC_read_card_init(void);

/*
 * 函数介绍: NFC读卡器CAN接受回调
 * 参数:
 * 返回值: {*}
 * 备注:
 */
void NFCRC_read_card_cbk(uint16_t id, uint8_t data[]);

/*
 * 函数介绍: NFC读卡器刷卡测试
 * 参数:
 * 返回值: {*}
 * 备注:
 */
Rt_result NFCRC_swipe(void);

/*
 * 函数介绍: NFC读卡器功能测试
 * 参数:
 * 返回值: {*}
 * 备注:
 */
Rt_result NFCread_card_test(void);

#endif
